Data Scraping con Python: Datos de Covid-19 a nivel Mundial



Introducción

A la hora de recopilar datos de libre acceso, alojados en sitios web de entidades y/o instituciones gubernamentales, es deseable obtenerlos en un "formato consumible" (xlsx,csv,sav, etc.) por el usuario, pero no siempre es posible. Para superar este inconveniente de manera eficiente, existen técnicas como el Web Scraping, que básicamente consiste en explorar el código fuente, identificar y extraer la información que sea considerada relevante para los fines deseados. Se dice que es eficiente porque una vez generado el script, es un proceso automatizado y replicable. En este caso, utilizando Python se desea obtener los datos de Covid-19 a nivel de países de todo el mundo.


Contenido

  1. Requerimientos (Requirements)
  2. Optención de datos (Data Collection)
  3. Procesamiento de la data (Data Processing)
  4. Exploración y análisis (Exploratory Data Analysis)

1. Requerimientos (Requirements)

Algunas estrategias de Web Scraping requieren de algún complemento o software adicional. Para este caso solo se utilza los recursos de dos paquetes de Python. Esto puede variar dependiendo de las características y la estructura de las páginas web.
Para lograr el objetivo, se requiere lo siguiente:

Eventualmente los paquetes ya conocidos: pandas, numpy, datetime, matplotliby plotly. Para procesar la Data, definir formato y visualizar mediante gráficos.

Nota. Otras fuentes para obetener datos de Covid-19: Healthdata, Ourworldindata, WorldHealthOrganization.

2. Optención de datos (Web Scraping)

Los reportes de Worldometer se actualizan a las 00:00 horas de la zona horaria GMT+0. Es decir, a las 19:00 horas de Perú (GMT-5), por lo que los registros de nuevos casos después de dicha hora permanecen vacíos para algunos países, incluyendo los de América. Para obtener la última Data completa de todos los países, es conveniente seleccionar la información del día anterior (En Perú, Data antes de 19:00 hrs).


alt text


alt text

En el siguiente apartado se realiza la consulta con la línea req = Request(url , headers..., que tiene como argumento la dirección web anteriormente almacenada en la variable url y headersque identifica al navegador. Posteriormente la consulta es aperturada y almacenada en webpage = urlopen(req). Finalmente se visualiza una parte de la estructura de la página web, que previamente fue analizada con BeautifulSoup (sup) y almacenada en page_soup.

A lo largo de código almacenado en page_soup, mediante el atributo table e identificador id se localiza la tabla que contiene la información a extraer, en este caso main_table_countries_yesterday. En adelante, en vista de que cada fila corresponde a un país, con findAll y el atributo td se establece una secuencia de instrucciones o loop para reemplazar los valores no existentes o no deseados, y así únicamente extraer los datos de nuestro interés, los cuales se adjuntan dentro del elemento all_data

3. Procesamiento de la data (Data Processing)

La Data extraída se transforma en DataFrame para ser procesada. Posteriormente, las columnas son etiquetadas y asignadas a un formato según corresponda.


4. Exploración y análisis (Exploratory Data Analysis)

Con la Data final almacenada en df ya es posible generar nuevas variables o indicadores según se requiera, para luego realizar el análisis y la exploración gráfica.
A modo de ejemplo, se genera nuevas variables y algunos gráficos; primero de forma agregada, luego por continentes, después se realiza una segmentación por países y finalmente una revisión del los casos de Covid-19 en América del Sur.


A nivel mundial (Global)

Casos según:

Continentes (By Continents)

Países (By Countries)

América del Sur (South America)

Subir ↑